op {
  graph_op_name: "AnonymousMutableDenseHashTable"
  visibility: HIDDEN
  in_arg {
    name: "empty_key"
    description: <<END
The key used to represent empty key buckets internally. Must not
be used in insert or lookup operations.
END
  }
  out_arg {
    name: "table_handle"
    description: <<END
The resource handle to the newly created hash-table resource.
END
  }
  attr {
    name: "key_dtype"
    description: <<END
Type of the table keys.
END
  }
  attr {
    name: "value_dtype"
    description: <<END
Type of the table values.
END
  }
  attr {
    name: "value_shape"
    description: <<END
The shape of each value.
END
  }
  attr {
    name: "initial_num_buckets"
    description: <<END
The initial number of hash table buckets. Must be a power
to 2.
END
  }
  attr {
    name: "max_load_factor"
    description: <<END
The maximum ratio between number of entries and number of
buckets before growing the table. Must be between 0 and 1.
END
  }
  summary: "Creates an empty anonymous mutable hash table that uses tensors as the backing store."
  description: <<END
This op creates a new anonymous mutable hash table (as a resource) everytime
it is executed, with the specified dtype of its keys and values,
returning the resource handle. Each value must be a scalar.
Data can be inserted into the table using
the insert operations. It does not support the initialization operation.

It uses "open addressing" with quadratic reprobing to resolve
collisions.

The table is anonymous in the sense that it can only be
accessed by the returned resource handle (e.g. it cannot be looked up
by a name in a resource manager). The table will be automatically
deleted when all resource handles pointing to it are gone.
END
}
